package com.itheima.contact.dao;

import com.itheima.contact.domain.User;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;

/**
 * @Author Azer
 * @LOVE,,,
 * @Date 2021/9/19 9:24
 */
public interface UserMapper {

    /**
     * 功能： 根据搜索关键字，查询用户数据
     * @param keyword
     * @return
     */
    @Select("select id,name,sex,age,address,qq,email from t_user " +
            "where name=#{keyword} or sex=#{keyword} or address=#{keyword} " +
            "or qq=#{keyword} or email=#{keyword}")
    public List<User> queryUserBySearch(String keyword);

    /**
     * 分页查询，每页显示的数据
     * @return
     */
//    @Select("select * from t_user where isdelete=0 limit #(startIndex),#{pageSize} ")
    @Select("select * from t_user where isdelete = 0 limit #{startIndex},#{pageSize}")
    public List<User> queryData(@Param("startIndex") int startIndex, @Param("pageSize") int pageSize);


    /**
     * 数据库中的数据条数
     * @return
     */
    @Select("select count(*) from t_user where isdelete=0")
    public int queryCount();

    /**
     * 修改用户
     * @return
     */
    @Update("update t_user set name=#{name},sex=#{sex},age=#{age},address=#{address} where id = #{id}")
    public void updateById(User user);

    /**
     * 查询用户，要把用户数据回显回去
     * @param id
     * @return
     */
    @Select("select * from t_user where id=#{id} ")
    public User queryById(int id);

    /**
     * 删除用户  删除用户在数据库里面不可以删除，但可以对其修改，将标记是否删除的值改为1即可，对应的查询时要查询没有删除的而用户
     * 即 标记值为0
     * @param id
     */
    @Update("update t_user set isdelete=1 where id=#{id}")
    public int deleteUserById(int id);

    /**
     * 添加用户
     * @param user
     * @return
     */
    @Insert("insert into t_user values(NULL ,#{name},#{sex},#{age},#{address},#{qq},#{email},0)")
    public  int addUser(User user);

    /**
     * 根据邮箱查询用户
     * @param email
     * @return 返回一个User对象
     */
    @Select("select * from t_user where email=#{email}")
    public User queryUserByEmail(String email);

    //查询所有用户
    @Select("select * from t_user where isdelete=0")
    List<User> queryAllUsers();


}
